<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Leanote Install</title>
  
    <meta name="author" content="jouyouyun">

    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <!-- Le styles -->
    <link href="/assets/twitter/stylesheets/bootstrap.min.css" type="text/css" rel="stylesheet" media="all">
<link href="/assets/twitter/stylesheets/style.css" type="text/css" rel="stylesheet" media="all">
<link href="/assets/twitter/widgets/google_prettify/stylesheets/twitter-bootstrap.css" type="text/css" rel="stylesheet" media="all">
 

    <!-- Le fav and touch icons -->
  <!-- Update these with your own images
    <link rel="shortcut icon" href="images/favicon.ico">
    <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
    <link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png">
  -->
  </head>

  <body>

    <div class="navbar">
      <div class="navbar-inner">
        <div class="container">
          <a class="brand" href="/">Jouyouyun&#39;s Blog</a>
          <ul class="nav">
            
              


  <li><a href="/archive">Archive</a></li>


            
              


  <li><a href="/tags">Tags</a></li>


            
              


  <li><a href="/categories">Categories</a></li>


            
              


  <li><a href="/about">About Me</a></li>


            
          </ul>
        </div>
      </div>
    </div>

    <div class="container">

      <div class="content">
        <div class="page-header">
  <h1>Leanote Install </h1>
</div>

<div class="row">
  <div class="span8">
    <p><code>Leanote</code> 是一款开源的笔记软件, 支持使用 <code>markdown</code> 来编辑笔记, 并可选择是否将笔记导出成博客, 这对于知识整理及写博客都是非常方便的, 故来尝试下.</p>

<hr />

<h2>安装</h2>

<hr />

<p><code>Leanote</code> 是使用 <code>Golang</code> 编写的, 可以直接使用官方编译好的可执行文件.
另外它使用的是 <code>mongodb</code> 数据库, 可以从源里安装, 也可以从官网下载.
以下的安装和配置都是基于最新的版本, 如果中途出错, 请看官方文档.</p>

<ul>
<li><p><code>Leanote</code> 下载地址: <a href="http://leanote.org/#download">见这里</a></p></li>

<li><p><code>mongodb</code> 下载地址: <a href="https://www.mongodb.com/download-center">见这里</a></p></li>
</ul>

<hr />

<h2>配置</h2>

<hr />

<h3><code>Leanote</code></h3>

<p>解压下载的文件, 然后进入 <code>Leanote</code> 解压后的目录, 编辑 <code>conf/app.conf</code>, 按需修改, 如 <code>site url, db user/passwd</code> 等.
不过必须更改 <code>app.secret</code>, 随意更改其中的几个字符即可.</p>

<h3><code>mongodb</code></h3>

<p>解压下载的文件后进入 <code>bin</code> 目录, 然后执行 <code>./mongod --dbpath &lt;data path&gt;</code> 来启动数据库, <code>data path</code> 需要是绝对路径，要保证目录结构存在.</p>

<p>然后另开一个终端来导入 <code>Leanote</code> 的初始设置 <code>./mongorestore -h localhost -d leanote --dir &lt;your leanote path&gt;/mongodb_backup/leanote_install_data/</code>.
导入完成后，为了安全性, 为 <code>leanote</code> 数据库创建用户认证, 命令如下:</p>

<pre><code>$&gt;./mongo
&gt; show dbs #　查看数据库
leanote 0.203125GB
local   0.078125GB
&gt; use leanote # 切换到 leanote
switched to db leanote
&gt; # 添加一个用户 root, 密码是 abc123
&gt; db.createUser({
    user: 'root',
    pwd: 'abc123',
    roles: [{role: 'dbOwner', db: 'leanote'}]
});
# 测试下是否正确
&gt; db.auth(&quot;root&quot;, &quot;abc123&quot;);
1 # 返回 1 表示正确
</code></pre>

<p>其中密码中不要含有 <code>@</code> 符号, 不然会连接数据库失败, 原因未知&#x2026;</p>

<p>创建了用户后, 需要在 <code>leanote/conf/app.conf</code> 中填入. 这样就配置完成了, 可以执行 <code>leanote</code> 下的 <code>bin/run.sh</code> 来启动 <code>leanote</code> 了.</p>

<hr />

<h2>账户管理</h2>

<hr />

<p>默认提供了 <code>admin</code> 和 <code>demo</code> 账户, 使用 <code>conf/app.conf</code> 里指定的管理员账户可以更改 <code>leanote</code> 的设置(如: 首页设置, 开放注册等)以及更改用户的密码.</p>

<p>另外可以直接操作数据库来管理用户, 下面介绍下如何创建, 更改以及删除用户, 更多操作请查看 <a href="http://docs.mongoing.com/manual-zh/crud.html">mongodb 文档</a> .
数据库名为 <code>leanote</code>, 账户表名为 <code>users</code> , 使用 <code>db.users.find()</code> 可以看到表中所有的记录 .</p>

<h3>创建账户</h3>

<p>新建的账户名为 <code>test1</code>, 邮箱为 <code>test1@gmail.com</code>, 密码由于是加密的, 就不在这里设置, 通过管理员到界面上去重置密码.</p>

<pre><code>&gt; use leanote
&gt; db.users.insert({&quot;Username&quot;: &quot;test1&quot;, &quot;Email&quot;: &quot;test1@gmail.com&quot;})
</code></pre>

<h3>更改</h3>

<p>如更改 <code>admin</code> 名为 <code>root</code>, 更改了 <code>admin</code> 后也需要到 <code>&lt;leanote path&gt;/conf/app.conf</code> 去更改管理员的名称, 如果设置了的话.</p>

<pre><code>&gt; use leanote
&gt; db.users.updateOne({&quot;Username&quot;: &quot;admin&quot;}, {$set: {&quot;Username&quot;: &quot;root&quot;}})
</code></pre>

<h3>删除</h3>

<p>如删除 <code>demon</code> 用户</p>

<pre><code>&gt; use leanote
&gt; db.users.remove({&quot;Username&quot;: &quot;demo&quot;})
</code></pre>

    <hr>
    <div class="pagination">
      <ul>
        <ul>
          
            <li class="prev"><a href="/Blog/TCP-BBR-%E8%AE%BE%E7%BD%AE%E5%8F%8A%E5%85%B6%E5%A2%9E%E5%BC%BA%E7%89%88/" title="TCP BBR 设置及其增强版">&larr; Previous</a></li>
          
          

            <li><a href="/archive">Archive</a></li>

          
            <li class="next"><a href="/Blog/OpenVPN-Install/" title="OpenVPN Install">Next &rarr;</a></li>
          
          
        </ul>
      </ul>
    </div>
    <hr>
    
<div id="disqus_thread"></div>
<script>
    var disqus_developer = 1;
    var disqus_shortname = 'jekyllbootstrap'; // required: replace example with your forum shortname
    /* * * DON'T EDIT BELOW THIS LINE * * */
    (function() {
        var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
        dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
        (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
    })();
</script>
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>

  </div>
  
  <div class="span4">
    <h4>Published</h4>
    <div class="date"><span>2017-07-17</span></div>
    <br>
    <h4>Categories</h4>
    <ul class="tag_box">
    
      <li>
  <a href="/categories/#Blog-ref">Blog <span>23</span></a>
</li>
    
    </ul>
    <br>
    <h4>Tags</h4>
    <ul class="tag_box">
    
      <li>
  <a href="/tags/#leanote-ref">leanote <span>1</span></a>
</li>
    
    </ul>
  </div>
</div>

      </div>

      <footer>
        <p>&copy; jouyouyun 2013 
          with help from <a href="http://github.com/wendal/gor" target="_blank" title="Gor -- Fast Blog">Gor</a>
          and <a href="http://twitter.github.com/bootstrap/" target="_blank">Twitter Bootstrap</a>
		  and Idea from <a href="http://ruhoh.com" target="_blank" title="The Definitive Technical Blogging Framework">ruhoh</a>
        </p>
      </footer>

    </div> <!-- /container -->

    
<script src="//cdnjscn.b0.upaiyun.com/libs/prettify/r298/prettify.min.js"></script>
<script>
  var pres = document.getElementsByTagName("pre");
  for (var i=0; i < pres.length; ++i) {
    pres[i].className = "prettyprint linenums";
  }
  prettyPrint();
</script>

    
<script type="text/javascript">

  var _gaq = _gaq || [];
  var pluginUrl = '//www.google-analytics.com/plugins/ga/inpage_linkid.js';
  _gaq.push(['_require', 'inpage_linkid', pluginUrl]);
  _gaq.push(['_setAccount', 'UA-123-12']);
  _gaq.push(['_trackPageview']);

  (function() {
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
  })();

</script>
  </body>
</html>
